package com.myKng.search.repository.es;

import com.myKng.search.model.KnowledgeDocument;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface KnowledgeDocumentRepository extends ElasticsearchRepository<KnowledgeDocument, String> {

    /**
     * 根据标题查询知识文档
     *
     * @param title 标题
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByTitle(String title);

    /**
     * 根据标题模糊查询知识文档
     *
     * @param title 标题关键词
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByTitleContaining(String title);

    /**
     * 根据文件名查询知识文档
     *
     * @param fileName 文件名
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByFileName(String fileName);

    /**
     * 根据文件类型查询知识文档
     *
     * @param fileType 文件类型
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByFileType(String fileType);

    /**
     * 根据标签查询知识文档
     *
     * @param tag 标签
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByTagsContaining(String tag);
    
    /**
     * 根据内容关键词查询知识文档
     *
     * @param keyword 内容关键词
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByContentContaining(String keyword);
    
    /**
     * 根据创建者ID查询知识文档
     *
     * @param creatorId 创建者ID
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByCreatorId(String creatorId);
    
    /**
     * 根据创建时间范围查询知识文档
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByCreateTimeBetween(long startTime, long endTime);
    
    /**
     * 根据更新时间范围查询知识文档
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 知识文档列表
     */
    List<KnowledgeDocument> findByUpdateTimeBetween(long startTime, long endTime);